#pragma once
#include "../../utils/common_ptr.h"
class SQLType
{
public:
  static SQLType_ptr SELECT;
  static SQLType_ptr UPDATE;
  static SQLType_ptr INSERT_SELECT;
  static SQLType_ptr INSERT_INTO_SELECT;
  static SQLType_ptr INSERT_OVERWRITE_SELECT;
  static SQLType_ptr INSERT_VALUES;
  static SQLType_ptr INSERT_INTO_VALUES;
  static SQLType_ptr INSERT_OVERWRITE_VALUES;
  static SQLType_ptr INSERT;
  static SQLType_ptr INSERT_INTO;
  static SQLType_ptr INSERT_OVERWRITE;
  static SQLType_ptr INSERT_MULTI;
  static SQLType_ptr DELETE;
  static SQLType_ptr MERGE;
  static SQLType_ptr CREATE;
  static SQLType_ptr ALTER;
  static SQLType_ptr DROP;
  static SQLType_ptr TRUNCATE;
  static SQLType_ptr REPLACE;
  static SQLType_ptr ANALYZE;
  static SQLType_ptr EXPLAIN;
  static SQLType_ptr SHOW;
  static SQLType_ptr SHOW_TABLES;
  static SQLType_ptr SHOW_USERS;
  static SQLType_ptr SHOW_PARTITIONS;
  static SQLType_ptr SHOW_CATALOGS;
  static SQLType_ptr SHOW_FUNCTIONS;
  static SQLType_ptr SHOW_ROLE;
  static SQLType_ptr SHOW_ROLES;
  static SQLType_ptr SHOW_PACKAGE;
  static SQLType_ptr SHOW_PACKAGES;
  static SQLType_ptr SHOW_CHANGELOGS;
  static SQLType_ptr SHOW_ACL;
  static SQLType_ptr SHOW_RECYCLEBIN;
  static SQLType_ptr SHOW_VARIABLES;
  static SQLType_ptr SHOW_HISTORY;
  static SQLType_ptr SHOW_GRANT;
  static SQLType_ptr SHOW_GRANTS;
  static SQLType_ptr SHOW_CREATE_TABLE;
  static SQLType_ptr SHOW_STATISTIC;
  static SQLType_ptr SHOW_STATISTIC_LIST;
  static SQLType_ptr SHOW_LABEL;
  static SQLType_ptr DESC;
  static SQLType_ptr SET;
  static SQLType_ptr SET_PROJECT;
  static SQLType_ptr SET_LABEL;
  static SQLType_ptr DUMP_DATA;
  static SQLType_ptr LIST; // for analyticdb
  static SQLType_ptr LIST_USERS;
  static SQLType_ptr LIST_TABLES;
  static SQLType_ptr LIST_ROLES;
  static SQLType_ptr LIST_TENANT_ROLES;
  static SQLType_ptr LIST_TRUSTEDPROJECTS;
  static SQLType_ptr LIST_ACCOUNTPROVIDERS;
  static SQLType_ptr LIST_TEMPORARY_OUTPUT;
  static SQLType_ptr WHO; // for analyticdb
  static SQLType_ptr GRANT;
  static SQLType_ptr REVOKE;
  static SQLType_ptr COMMIT;
  static SQLType_ptr ROLLBACK;
  static SQLType_ptr USE;
  static SQLType_ptr KILL;
  static SQLType_ptr MSCK;
  static SQLType_ptr ADD_USER;
  static SQLType_ptr REMOVE_USER;
  static SQLType_ptr REMOVE_RESOURCE;
  static SQLType_ptr CREATE_USER;
  static SQLType_ptr CREATE_TABLE;
  static SQLType_ptr CREATE_TABLE_AS_SELECT;
  static SQLType_ptr CREATE_VIEW;
  static SQLType_ptr CREATE_FUNCTION;
  static SQLType_ptr CREATE_ROLE;
  static SQLType_ptr CREATE_PACKAGE;
  static SQLType_ptr DROP_USER;
  static SQLType_ptr DROP_TABLE;
  static SQLType_ptr DROP_VIEW;
  static SQLType_ptr DROP_MATERIALIZED_VIEW;
  static SQLType_ptr DROP_FUNCTION;
  static SQLType_ptr DROP_ROLE;
  static SQLType_ptr DROP_RESOURCE;
  static SQLType_ptr ALTER_USER;
  static SQLType_ptr ALTER_TABLE;
  static SQLType_ptr ALTER_VIEW;
  static SQLType_ptr READ;
  static SQLType_ptr ADD_TABLE;
  static SQLType_ptr ADD_FUNCTION;
  static SQLType_ptr ADD_RESOURCE;
  static SQLType_ptr ADD_TRUSTEDPROJECT;
  static SQLType_ptr ADD_VOLUME;
  static SQLType_ptr ADD_STATISTIC;
  static SQLType_ptr ADD_ACCOUNTPROVIDER;
  static SQLType_ptr TUNNEL_DOWNLOAD;
  static SQLType_ptr UPLOAD;
  static SQLType_ptr WHOAMI;
  static SQLType_ptr SCRIPT;
  static SQLType_ptr COUNT;
  static SQLType_ptr ADD;
  static SQLType_ptr CLONE;
  static SQLType_ptr LOAD;
  static SQLType_ptr INSTALL;
  static SQLType_ptr UNLOAD;
  static SQLType_ptr ALLOW;
  static SQLType_ptr PURGE;
  static SQLType_ptr RESTORE;
  static SQLType_ptr EXSTORE;
  static SQLType_ptr UNDO;
  static SQLType_ptr REMOVE;
  static SQLType_ptr EMPTY;
  static SQLType_ptr ALTER_TABLE_ADD_PARTITION;
  static SQLType_ptr ALTER_TABLE_MERGE_PARTITION;
  static SQLType_ptr ALTER_TABLE_DROP_PARTITION;
  static SQLType_ptr ALTER_TABLE_RENAME_PARTITION;
  static SQLType_ptr ALTER_TABLE_SET_LIFECYCLE;
  static SQLType_ptr ALTER_TABLE_ENABLE_LIFECYCLE;
  static SQLType_ptr ALTER_TABLE_DISABLE_LIFECYCLE;
  static SQLType_ptr ALTER_TABLE_RENAME;
  static SQLType_ptr ALTER_TABLE_ADD_COLUMN;
  static SQLType_ptr ALTER_TABLE_RENAME_COLUMN;
  static SQLType_ptr ALTER_TABLE_ALTER_COLUMN;
  static SQLType_ptr ALTER_TABLE_SET_TBLPROPERTIES;
  static SQLType_ptr ALTER_TABLE_SET_COMMENT;
  static SQLType_ptr ALTER_TABLE_TOUCH;
  static SQLType_ptr ALTER_TABLE_CHANGE_OWNER;
  static SQLType_ptr MULTI;
  static SQLType_ptr WITH;
  static SQLType_ptr SET_UNKNOWN;
  static SQLType_ptr UNKNOWN;
  static SQLType_ptr ERROR;

  string_ptr name;
  uint64_t mask0;
  uint64_t mask1;

  SQLType(uint64_t mask0, uint64_t mask1, string_ptr name);
};
